#!/bin/bash

#将所有.tar.gz文件解压为.tar

# 遍历当前目录下的所有 .tar.gz 文件
for file in *.tar.gz; do
  # 检查文件是否存在，防止目录为空
  if [ -f "$file" ]; then
    # 获取文件名，不包括扩展名
    base=${file%.tar.gz}
    
    # 解压为 .tar 文件
    gunzip -c "$file" > "$base.tar"
    
    echo "解压完成: $file -> $base.tar"
  else
    echo "没有找到 .tar.gz 文件"
  fi
done



# 指定要扫描的目录路径
SCAN_DIR=$(pwd)

# 确保Trivy安装
if ! command -v trivy &> /dev/null
then
    echo "Trivy could not be found, please install it first."
    exit 1
fi

mkdir trivy_result

# 遍历目录下的所有.tar文件
find "$SCAN_DIR" -type f -name '*.tar' | while read -r tar_file; do
    
    relative_path="${tar_file#$SCAN_DIR/}"
    echo "Scanning file: $relative_path"
    
    # 假设tar文件包含一个docker镜像，我们使用trivy image命令扫描
    # 这里需要替换为适合你的tar文件的命令
    # 例如，如果tar文件是docker镜像的存档，可以使用docker load来加载
    # docker load < $tar_file
    # 然后使用trivy扫描加载的镜像
    # IMAGE_NAME=$(docker images -q --filter "dangling=false")  # 获取镜像名称
    # trivy image $IMAGE_NAME -f json > "${tar_file%.tar}_trivy.json"
    
    trivy image -f json -o "./trivy_result/${relative_path%.tar}.json" --input $tar_file --skip-db-update

    # 这里只是一个示例，具体实现取决于你的tar文件内容
    # 你需要根据实际情况调整上述命令

    echo "Scan results are saved to ${relative_path%.tar}_trivy_result.json"

done

echo "Scan completed."
